package com.yiweikeji.project.util;

import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class StringUtil {

	
	//获取指定位数的随机字符串(包含小写字母、大写字母、数字,0<length)
	public static String getRandomString(int length) {
	    //随机字符串的随机字符库
	    String KeyString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	    StringBuffer sb = new StringBuffer();
	    int len = KeyString.length();
	    for (int i = 0; i < length; i++) {
	       sb.append(KeyString.charAt((int) Math.round(Math.random() * (len - 1))));
	    }
	    return sb.toString();
	}
	
	
	   //获取指定位数的随机字符串(包含小写字母、大写字母、数字,0<length)
    public static String getRandomInteger(int length) throws UnsupportedEncodingException {
        //随机字符串的随机字符库
        String KeyString = "0123456789";
        StringBuffer sb = new StringBuffer();
        int len = KeyString.length();
        for (int i = 0; i < length; i++) {
           sb.append(KeyString.charAt((int) Math.round(Math.random() * (len - 1))));
        }
        String code = new String(sb.toString().getBytes(),"utf-8");
        return code;
    }
    
    
    /**
     * code+yyyyMMddHHmmss+随机4位数字
     * 
     * @param code 活动标识
     * @return
     * @throws ParseException
     */
  	public static String getCodeByDate(String code) throws ParseException{
  	    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
  	    String stringDate = sdf.format(new Date());
  	    Double d =((Math.random()*9+1)*1000);
		return code.toUpperCase()+stringDate+d.intValue();
  	    
  	}
    
	//校验密码是否符合规则(6到12位字母加数字组合密码)
	public static String ensurePwd(String password){
	    String returnMes = "";
	    if(!password.equals("")){
	        if(password.length()<6 || password.length() >12){
	            returnMes += "密码长度需为6到12位;";
	        }
	        //判断密码是否包含数字：包含返回1，不包含返回0
	        int i = password.matches(".*\\d+.*") ? 1 : 0;
	        if(i==0){
	            returnMes += "密码必须包含数字;";
	        }
	        //判断密码是否包含字母：包含返回1，不包含返回0
	        int j = password.matches(".*[a-zA-Z]+.*") ? 1 : 0; 
	        if(j ==0){
	            returnMes += "密码必须包含字母;";
	        }
	        //判断密码是否包含特殊符号(~!@#$%^&*()_+|<>,.?/:;'[]{}\)：包含返回1，不包含返回0
	        int k = password.matches(".*[~!@#$%^&*()_+|<>,.?/:;'\\[\\]{}\"]+.*") ? 1 : 0;
	        if(k ==1){
	            returnMes += "密码必须不能包含特殊字符;";
	        }
	    }else{
	        returnMes = "密码不可为空";
	    }
	    
	    if("".equals(returnMes)){
	        returnMes = "200";
	    }
        return returnMes;
	    
	}
	
	/**
	 * 
	 * 传入字符串加签，返回字符串
	 * @return
	 */
	public static String signature(String message){
	    
        return null;
	    
	}
	
	/**
	 * 使用RSA对报文正文加密
	 *
	 * @param message
	 * @return
	 */
	public static String encrypt(String message){
	    
        return null;
	    
	}
	
	/**
	 * 使用RSA对报文正文解密密
	 *
	 * @return
	 */
	public static String decrypt(String message){
	    
        return null;
	    
	}

}
